#pragma once
#include <boost/noncopyable.hpp>
#include <OIS/OIS.h>
#include "ImportExport.hpp"

namespace he
{
	//! Handling of input (mouse, keyboard, ...).
	class InputManager : boost::noncopyable
	{
		// Attributes
	private:
		//! OIS input manager.
		OIS::InputManager *m_pOIS;
		//! Keyboard.
		OIS::Keyboard *m_pKeyboard;
		//! Mouse.
		OIS::Mouse *m_pMouse;
		//! Key states.
		char m_KeyState[256];
		//! Old key states.
		char m_KeyStateOld[256];

		// Operations
	public:
		//! Update.
		HE_ENGINE_API void update();
		//! Is key up.
		HE_ENGINE_API bool is_key_up(OIS::KeyCode Key) const;
		//! Is key down.
		HE_ENGINE_API bool is_key_down(OIS::KeyCode Key) const;

		// Construction/Destruction
	public:
		HE_ENGINE_API InputManager(Ogre::RenderWindow &Window);
		HE_ENGINE_API ~InputManager();
	};
} /*he*/
